<?php
class Db_OrderHelper
{
    const CART_STATUS_PENDING               = 1;
    const CART_STATUS_PAID                  = 4;
    const CART_STATUS_CANCELLED             = 5;
    const CART_STATUS_USED             		= 6;

    const BOOKING_STATUS_PENDING            = 2;
    const BOOKING_STATUS_PAID               = 1;
    const BOOKING_STATUS_CANCELLED          = 3;
    const BOOKING_STATUS_USED          		= 4;

    const BILL_STATUS_PAID                  = 1;
    const BILL_STATUS_CANCELLED             = 2;
    const BILL_STATUS_USED                  = 3;

    const SOHAPAYMENT_TYPE_INTERNATIONAL   = 1;
    const SOHAPAYMENT_TYPE_DOMESTIC        = 2;
    const SOHAPAYMENT_TYPE_BANK_TRANSFER   = 7;

    const PAYMENT_TYPE_SOHAPAY              = 1;
    const PAYMENT_TYPE_OKACARD              = 2;
    const PAYMENT_TYPE_COD                  = 3;
    const PAYMENT_TYPE_COO                  = 4;

    const SOURCE_ORDER_FROM_OKA             = 1;
    const SOURCE_ORDER_FROM_PROVIDER        = 2;


    public static function updateCart($cart_id, $data) {
        if($cart_id){
            DB::update_id('cart', $data, $cart_id, __FILE__ . ' line ' . __LINE__);
        }
    }

    public static function updateBookingByCartId($cart_id, $data) {
        if($cart_id){
            DB::update('booking', $data, 'cart_id=' . $cart_id, __FILE__ . ' line ' . __LINE__);
        }
    }

    /**
     * Cập nhật trạng thái của check_room, room_status khi booking
     * @param $booking
     */
    public static function updateRoomStatusByBooking($booking){
        $available = Db_Room::getAvailableRoomNumber($booking['room_id'], $booking['date_start'], $booking['date_end']);
        for ($i = $booking['date_start']; $i < $booking['date_end']; $i += 24 * 60 * 60) {
            if($available[$i] == 0){
                // đã hết phòng.
                DB::update('check_room', array('status' => 2), 'check_time = ' . $i . ' AND room_id=' . $booking['room_id']);
            }
            $room_status = DB::select('room_status', 'day = ' . $i . ' AND room_id=' . $booking['room_id']);
            if ($room_status != '' AND sizeof($room_status) > 0) {
                DB::update('room_status', array('available' => $available[$i]), 'day = ' . $i . ' AND room_id=' . $booking['room_id'], __FILE__ .' line '. __LINE__);
            }else{
                $v = array();
                $v['room_id'] = $booking['room_id'];
                $v['available'] = $available[$i];
                $v['created_time'] = TIME_NOW;
                $v['is_lock'] = 1;
                $v['day'] = $i;
                DB::insert('room_status', $v);
            }
        }
    }
	
	/**
     * Cập nhật trạng thái của check_room, room_status khi hủy phòng
     * @param $booking
     */
    public static function updateRoomStatusCancelled($booking){
        $available = Db_Room::getAvailableRoomNumber($booking['room_id'], $booking['date_start'], $booking['date_end']);
		for ($i = $booking['date_start']; $i < $booking['date_end']; $i += 24 * 60 * 60) {
			if($available[$i] == 0){
				$check_r = array();
				$check_r['status'] = 2; // đã hết phòng.
				DB::update('check_room', $check_r, 'check_time = ' . $i . ' AND room_id=' . $booking['room_id']);
			}elseif($available[$i] > 0){
				$check_r = array();
				$check_r['status'] = 1; // có phòng trống ok
				DB::update('check_room', $check_r, 'check_time = ' . $i . ' AND room_id=' . $booking['room_id']);
			}

			//update lại số lượng phòng trống trong room_status
			$room_update = array();
			$room_update['available'] = $available[$i];
			DB::update('room_status', $room_update, 'day = ' . $i . ' AND room_id=' . $booking['room_id'], __FILE__ . ' line ' . __LINE__);
		}
    }
}
